package com.weitu.contractor.service;

import com.weitu.contractor.entity.ContractorInfo;
import com.weitu.contractor.entity.ContractorInfoCriteria;

import java.util.List;
import java.util.Map;

public interface ContractorInfoService {
    /**
     * 根据条件查询数量
     * @param example 条件对象
     * @return 数量
     */
    int countByCriteria(ContractorInfoCriteria example);
    /**
     * 根据条件删除数据
     * @param example 条件对象
     * @return 受影响的行数
     */
    int deleteByCriteria(ContractorInfoCriteria example);
    /**
     * 根据条件更新对应字段
     * @param record 要更新的对象（必须包含id）
     * @param example 条件对象
     * @return 受影响的行数
     */
    int updateByCriteriaSelective(ContractorInfo record, ContractorInfoCriteria example);

    /**
     * 根据条件查询列表
     * @param example 条件对象
     * @return 数据列表
     */
    List<ContractorInfo> selectByCriteria(ContractorInfoCriteria example);

    /**
     * 根据条件查询单个实体
     * @param id 主键
     * @return 实体
     */
    ContractorInfo selectById(String id);

    /**
     * 根据id删除单个实体
     * @param id 主键
     * @return 受影响的行数
     */
    int deleteById(String id);

    /**
     * 根据对象更新相应字段
     * @param record 实体
     * @return 是否成功
     */
    boolean updateByIdSelective(ContractorInfo record);

    /**
     * 根据对象插入相应的字段
     * @param record 实体
     * @return 受影响的行数
     */
    int insertSelective(ContractorInfo record);

    /**
     * 根据特定条件查询分页列表
     * @param paramMap 参数
     * @return 数据列表
     */
    List<ContractorInfo> queryList(Map paramMap);

    /**
     * 根据特定条件查询数量
     * @param paramMap 参数
     * @return 数量
     */
    int queryCount(Map paramMap);

    /**
     * 检查是否已有相同名称和代码的数据
     * @param name 名称
     * @param code 代码
     * @return 存在返回true，反之返回false
     */
    boolean checkIfExist(String name,String code);

    /**
     * 没有重复数据时插入（名称和代码不能重复）
     * @param contractorInfo 实体
     * @return 是否成功
     */
    boolean insertIfNotExist(ContractorInfo contractorInfo);

    /**
     * 根据承包商名称查询承包商id列表
     * @param name 承包商名称
     * @return 承包商id列表
     */
    List<String> selectContractorIdsByName(String name);
}